home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / interfaces3_5.lha / Interfaces / NonVolatile.mod < prev    next >
Text File  |  1994-03-05  |  3KB  |  106 lines

  1. (*
  2. (*  Amiga Oberon Interface Module:
  3. **  $VER: NonVolatile.mod 40.15 (28.12.93) Oberon 3.0
  4. **
  5. **      (C) Copyright 1993 Commodore-Amiga, Inc.
  6. **          All Rights Reserved
  7. **
  8. **      (C) Copyright Oberon Interface 1993 by hartmut Goebel
  9. *)          All Rights Reserved
  10. *)
  11.  
  12. MODULE NonVolatile;
  13.  
  14. IMPORT
  15.   e * := Exec,
  16.   u * := Utility,
  17.   SYSTEM;
  18.  
  19. CONST
  20.   nonvolatileName * = "nonvolatile.library";
  21.  
  22.  
  23. TYPE
  24.   NVEntryPtr * = UNTRACED POINTER TO NVEntry;
  25.   NVInfoPtr  * = UNTRACED POINTER TO NVInfo;
  26.  
  27. (*****************************************************************************)
  28.  
  29.  
  30.   NVInfo * = STRUCT
  31.     maxStorage  * :  LONGINT;
  32.     freeStorage * :  LONGINT;
  33.   END;
  34.  
  35.  
  36. (*****************************************************************************)
  37.  
  38.  
  39.   NVEntry * = STRUCT (node *:  e.MinNode);
  40.     name       * :  e.LSTRPTR;
  41.     size       * :  LONGINT;
  42.     protection * :  LONGINT;
  43.   END;
  44.  
  45. CONST
  46. (* bit definitions for mask in SetNVProtection().  Also used for
  47.  * NVEntry.nve_Protection.
  48.  *)
  49.   delete  * = 0;
  50.   appName * = 31;
  51.  
  52. (*****************************************************************************)
  53.  
  54.  
  55. (* errors from StoreNV() *)
  56.   errBadName   * = 1;
  57.   errWriteProt * = 2;
  58.   errFail      * = 3;
  59.   errFatal     * = 4;
  60.  
  61. TYPE
  62.   DataPtr * = UNTRACED POINTER TO Data;
  63.   Data * = STRUCT END;
  64.  
  65. (* $StackChk- $RangeChk- $NilChk- $OvflChk- $ReturnChk- $CaseChk- *)
  66.  
  67. VAR
  68.   base *: e.LibraryPtr;
  69.  
  70. (*--- functions in V40 or higher (Release 3.1) ---*)
  71. PROCEDURE GetCopyNV       *{base,-001EH}(appName{8}   : ARRAY OF CHAR;
  72.                                          itemName{9}  : ARRAY OF CHAR;
  73.                                          killReqs{1}  : e.LONGBOOL): DataPtr;
  74. PROCEDURE FreeNVData      *{base,-0024H}(data{8}      : DataPtr);
  75. PROCEDURE StoreNV         *{base,-002AH}(appName{8}   : ARRAY OF CHAR;
  76.                                          itemName{9}  : ARRAY OF CHAR;
  77.                                          data{10}     : DataPtr;
  78.                                          length{0}    : LONGINT;
  79.                                          killReqs{1}  : e.LONGBOOL): INTEGER;
  80. PROCEDURE DeleteNV        *{base,-0030H}(appName{8}   : ARRAY OF CHAR;
  81.                                          itemName{9}  : ARRAY OF CHAR;
  82.                                          killReqs{1}  : e.LONGBOOL): BOOLEAN;
  83. PROCEDURE GetNVInfo       *{base,-0036H}(killReqs{1}  : e.LONGBOOL): NVInfoPtr;
  84. PROCEDURE GetNVList       *{base,-003CH}(appName{8}   : ARRAY OF CHAR;
  85.                                          killReqs{1}  : e.LONGBOOL): e.MinListPtr;
  86. PROCEDURE SetNVProtection *{base,-0042H}(appName{8}   : ARRAY OF CHAR;
  87.                                          itemName{9}  : ARRAY OF CHAR;
  88.                                          mask{2}      : LONGSET;
  89.                                          killReqs{1}  : e.LONGBOOL): BOOLEAN;
  90.  
  91. (* determine the size of data returned by this library *)
  92. PROCEDURE SizeNVData * (data{8}: DataPtr): LONGINT;
  93. TYPE Size = UNTRACED POINTER TO LONGINT;
  94. BEGIN
  95.   RETURN SYSTEM.VAL(Size,SYSTEM.VAL(LONGINT,data)-SIZE(LONGINT))^-4;
  96. END SizeNVData;
  97.  
  98. BEGIN
  99.   base := e.OpenLibrary(nonvolatileName,40);
  100.  
  101. CLOSE
  102.   IF base # NIL THEN e.CloseLibrary(base); END;
  103.  
  104. END NonVolatile.
  105.  
  106.